//引入第三方模块mongoose
const mongoose = require("mongoose");


// 用 mongoose.connect方法连接数据库：返回的值是promise对象
mongoose.connect("mongodb://localhost/playground3",{useNewUrlParser:true })
		.then(() => {console.log("数据库连接成功！")})
		.catch(err => {console.log(err,'数据库连接失败！')});


// 创建集合规则:调用mongoose.Schema这个构造函数创建实例对象（也是构造函数）
// 在 mongoose.Schema构造函数传入一个对象的参数
const articleSchema = new mongoose.Schema({
	title:{
		type:String,
		required:[true,"请输入文章标题"],
		minlength:[2,"文章标题长度不能小于2"],
		maxlength:[5,"文章长度不能大于5"],
		trim:true,

	},
	age:{
		type:Number,
		min:[10,"年龄必须大于10"],
		max:60,
	},
	publishDate:{
		type:Date,
		default:Date.now,
	},
	category:{
		type:String,
		required:[true,"请选择文章分类"],
		enum:["html","css","javascript","node.js"]
	},
	author:{
		type:String,
		required:[true,"亲输入作者名称"],
		validate:{
			validator:v=>{
				// 返回布尔值
				// true表示验证成功
				// false表示验证失败
				return v && v.length >4
			},
			message:"传入的值不符合自定义验证规则"
		},
	},
})
let Article= new mongoose.model("Article",articleSchema) ;



/*mongoose验证：
1、String的验证：required、minlength、maxlength、trim：true，
2、数值的验证：min、max ，
3、分类（category）验证：enum，
4、自定义验证器：validate
5、默认值：default
*/



// 1、创建文档方法一：
// const art1 = new Article({
// 	title:"文章标题一1",
// })

// art1.save();




// 创建文档方法二
// 1、输出的错误对象没有处理
/*Article.create({title:"   文章标题6   ",age:38,category:"javascript",author:"001"})
.then(result => {
	console.log(result)
})
.catch(error =>{
	console.log(error)
})
*/

// 2、输出的错误对象处理过得
Article.create({title:"   文章标题6   ",age:38,category:"javascript",author:"001"})
.then(result => {
	console.log(result)
})
.catch(error =>{
	//获取错误信息对象
	let err =error.errors;
	// 循环错误信息对象
	for( var attr in err){
		// 将错误信息打印到控制台中
		console.log(err[attr]["message"]);
	}
	
})








